Micron Document
____ _ _ _ _
| _ \ ___ | |_ (_) _ __ ___ __| | (_) __ _
| |_) | / _ \ | __| | | | '_ \ / _ \ / _| | | | / _ |
| _ < | __/ | |_ | | | |_) | | __/ | (_| | | | | (_| |
|_| \_\ \___| \__| |_| | .__/ \___| \__,_| |_| \__,_|
|_|


The NomadNet German Wikipedia | Archives | Info
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b

πŸ” Search

Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―

First-Class-Objekt
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
Ein First-Class-Objekt (englisch first-class object, deutsch etwa β€žObjekt erster Klasseβ€œ) bezeichnet in der Programmierung von Computersystemen ein Objekt, das als Übergabeparameter oder RΓΌckgabewert einer Funktion oder Prozedur auftritt bzw. einer Variablen zugewiesen werden kann.cite-ref-1[1]

Der Begriff wurde von Christopher Strachey im Kontext functions as first-class citizens Mitte der 1960er Jahre geprΓ€gt.cite-ref-2[2]

Contents

β€’ Definition
β€’ Beispiele

──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Definition

Ein Objekt ist von erster Klasse, falls es die folgenden Bedingungen erfΓΌllt:cite-ref-3[3]cite-ref-4[4]

β€’ es kann in Programmvariablen gespeichert werden,
β€’ es kann als Parameter an Funktionen oder Prozeduren ΓΌbergeben werden,
β€’ es kann als RΓΌckgabewert von Funktionen dienen,
β€’ es kann zur Laufzeit eines Programms erstellt werden und
β€’ es hat eine eigene IdentitΓ€t (unabhΓ€ngig vom Namen).

Der Begriff Objekt muss dabei nicht im engeren Sinne als ein Objekt einer objektorientierten Programmiersprache verstanden werden. In den meisten Programmiersprachen sind insbesondere die Objekte der elementaren Datentypen, z. B. Ganzzahl- und Gleitkommaobjekte, immer erster Klasse.

Beispiele

β€’ In C und C++ sind Funktionen keine Objekte erster Klasse, da es nicht mΓΆglich ist, sie zur Laufzeit zu erzeugen – anders als z. B. Zahlen. Auch Arrays sind keine Objekte erster Klasse, da sie nicht als Funktionsparameter ΓΌbergeben werden kΓΆnnen.
β€’ In Fortran sind Strings keine Objekte erster Klasse, da es nicht mΓΆglich ist, sie Variablen zuzuweisen.
β€’ Hingegen sind Funktionen in den meisten funktionalen Programmiersprachen First-Class-Objekte (bzw. First-Class-Funktionen) z. B. in Haskell, Scala, Smalltalk, OCaml und verschiedenen Lisp-Dialekten wie Scheme und Clojure, nicht jedoch in Common Lisp.
β€’ Die auf Konzepten von Scratch und Scheme aufbauende erziehungsorientierte visuelle Programmiersprache Snap! bietet einen anschaulichen und durchgΓ€ngigen Zugang zu First-Class-Objekten.

Einzelnachweise

cite-note-11. ↑ Michael Scott: Programming Language Pragmatics. Morgan Kaufmann Publishers, San Francisco, CA 2006, S. 140.
cite-note-22. ↑ Rod Burstall: Christopher Stracheyβ€”Understanding Programming Languages. Higher-Order and Symbolic Computation, Band 13, Nr. 52, 2000.
cite-note-33. ↑ First Class. C2.com, 25. Januar 2006, abgerufen am 9. Oktober 2010.
cite-note-44. ↑ first class object. Catalysoft.com, abgerufen am 9. Oktober 2010.